export const loginRule = {
  userRule: [
    { required: true, message: '账户名不能为空' },
    { max: 16, message: '账户名长度不正确' },
    { min: 4, message: '账户名长度不正确' },
  ],
  passwordRule: [
    { required: true, message: '密码不能为空' },
    { max: 16, message: '密码长度不正确' },
    { min: 4, message: '密码长度不正确' },
  ],
  mobileRule: [
    {
      validator: (rule, val, callback) => {
        const mobileReg = /^1[3|4|5|6|7|8][0-9]\d{8}$/;
        switch (true) {
          case !Boolean(val):
            return Promise.reject('手机号码不能为空');
          case !mobileReg.test(val):
            return Promise.reject('手机号码格式不正确');
          default:
            return Promise.resolve();
        }
      },
    },
  ],
  smCodeRule: [
    { required: true, message: '验证码不能为空' },
    { max: 6, message: '最大长度为6位' },
    { min: 6, message: '最小长度为6位' },
  ],
  smCodeRule: [
    { required: true, message: '验证码不能为空' },
    { max: 6, message: '最大长度为6位' },
    { min: 6, message: '最小长度为6位' },
  ],
  passwordRule: [
    { required: true, message: '密码不能为空' },
    { max: 16, message: '密码长度不正确' },
    { min: 4, message: '密码长度不正确' },
  ],
  /**
   * 定义验证确认密码的规则。
   * 此函数用于生成一个验证规则对象，该对象用于确保用户输入的确认密码与原始密码一致且不为空。
   * @param {Object} form - 表单对象，提供获取表单字段值的方法。
   * @returns {Array} 返回一个包含验证规则的数组。
   */
  confirmPasswordRule(form) {
    return [
      {
        /**
         * 验证确认密码是否符合要求。
         * @param {Object} rule - 验证规则对象，包含验证规则的详细信息。
         * @param {string} val - 确认密码的输入值。
         * @returns {Promise} 返回一个Promise对象，根据验证结果决定是解决(reject)还是拒绝(resolve)。
         */
        validator: (rule, val) => {
          switch (true) {
            case !Boolean(val):
              // 如果确认密码为空，则返回一个拒绝的Promise并附带错误消息。
              return Promise.reject('密码不能为空');
            case form.getFieldValue('password') !== val:
              // 如果确认密码与原始密码不一致，则返回一个拒绝的Promise并附带错误消息。
              return Promise.reject('两次密码不一致');
            default:
              // 如果确认密码符合所有要求，则返回一个解决的Promise。
              return Promise.resolve();
          }
        },
      },
    ];
  },
};
